import tkinter as tk

# 创建主窗口
root = tk.Tk()
root.title("Tkinter 多选框示例")
root.geometry("300x200")

# 定义一个列表来存储所有复选框的布尔变量
checkbox_vars = []
# 定义复选框选项列表
options = ["选项1", "选项2", "选项3", "选项4"]

# 定义一个函数，用于处理复选框的选择事件
def show_selection():
    selections = [] # 创建一个空列表，用于存储选中的选项
    # 遍历所有复选框的布尔变量
    for i, var in enumerate(checkbox_vars):
        if var.get(): # 如果布尔变量的值为 True
            # 如果复选框被选中，将对应的选项添加到 selections 列表中
            selections.append(options[i])
    # print("你选择了：", ", ".join(selections))

# 动态创建复选框
for option in options: # 遍历选项列表
    var = tk.BooleanVar() # 创建一个布尔变量
    checkbox_vars.append(var) # 将布尔变量添加到列表中
    # 创建复选框，设置文本、关联的布尔变量和点击时调用的函数
    checkbox = tk.Checkbutton(root, text=option, variable=var, command=show_selection)
    checkbox.pack() # 将复选框添加到主窗口中

# 创建一个输入框
entry = tk.Entry(root)
entry.pack()

# 修改 show_selection 函数，使其将选中的复选框的值填入输入框
def show_selection2():
    selections = []
    for i, var in enumerate(checkbox_vars):
        if var.get():
            selections.append(options[i])
    if selections:
        # 将选中的选项用逗号连接成字符串，并填入输入框
        entry.delete(0, tk.END)
        entry.insert(0, ", ".join(selections)) # 填入输入框
    # print("你选择了：", ", ".join(selections))

# 创建一个按钮，点击时调用 show_selection 函数
button = tk.Button(root, text="查看选择", command=show_selection2)
button.pack()


# 运行主循环
root.mainloop()